import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

// readValue的第二个参数
class User{
    // 当前这俩属性都设置成 public
    // 如果是设为 private，但是同时提供了 getter，setter，效果是一样的。
    public int userId;
    public int classId;
}

@WebServlet("/postGetParameter2")
public class PostJsonServlet extends HttpServlet {
    //1、创建一个 Jackson 的核心对象
    private ObjectMapper objectMapper = new ObjectMapper();
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //2、读取 body 中的请求，然后使用 ObjectMapper 来解析成 需要的时候
        // 这里的 readValue 就是把字符串 转换成 Java 的对象
        // 第一个参数：
        // 表示对哪个字符串进行转换，这个参数可以填写成一个 String，也可以写inputStream，还可以是 File
        // 第二参数：
        // 表示要把这个 JSON 格式的字符串，转成哪个 Java 对象
        User user = objectMapper.readValue(req.getInputStream(),User.class);
        resp.setContentType("text/html; charset=utf8");
        resp.getWriter().write("userId=" + user.userId + ", classId=" + user.classId);
    }
}
